package com.atguigu.bigdata.scala.mytest.chapter07

import scala.collection.mutable
import scala.collection.mutable.ArrayBuffer

object Test_Array {
  def main(args: Array[String]): Unit = {
    //声明
    val ints: Array[Int] = new Array[Int](3)
    ints(0)=1
    ints(1)=111
    ints(2)=11111
    //转换成为 以,分隔的字符串
    val str: String = ints.mkString(",")
    println(str)
    println("=============遍历for===============")
    for (elem <- ints) {
      println(elem)
    }
    println("=============遍历foreach===============")
    //以面向对象对象的方式遍历.foreach方法可以循环集合中的每一个元素传递给函数
    ints.foreach((i:Int)=>{println(i)})
    //简写
    ints.foreach(println)

    println("=============apply===============")
    //使用apply创建集合,apply可省略
    val strArray: Array[String] = Array.apply("a","b","Cc")
    val strArray1: Array[String] = Array("q","qq","qqq")
    //默认情况下，scala中使用的集合都是不可变集合，这里的Array就是不可变集合,所以操作后会出现新的对象
    val strArray2= strArray1:+"q1"
    println(strArray1.mkString(","))//q,qq,qqq
    println(strArray2.mkString(","))//q,qq,qqq,q1
    println(strArray1.eq(strArray2))//false

    println("=============ArrayBuffer===============")
    //可变集合,操作不会产生新对象
    val ab1: ArrayBuffer[Int] = ArrayBuffer.apply(10,11,12)
    val ab2 = ArrayBuffer(17,18,19)
    //在后追加
    val a3= ab2.append(20)
    println(a3)//()
    println(ab2.mkString(","))//17,18,19,20
    //在指定索引位置添加元素,该位置元素后移
    ab2.insert(1,111)
    println(ab2.mkString(","))//17,111,18,19,20
    //从索引2的位置删除2个元素
    ab2.remove(2,2)
    println(ab2.mkString(","))//17,111,20
    //将索引1位置的元素改为18888
    ab2.update(1,18888)
    println(ab2.mkString(","))//17,18888,20

    println("=============可变不可变转换===============")
    val array = Array(1,2)
    val buffer = ArrayBuffer(1, 2)
    //不可变转可变
    val buffer1: mutable.Buffer[Int] = array.toBuffer
    //可变转不可变
    val array1: Array[Int] = buffer.toArray

  }

}
